<?php
namespace App\server;

use App\Logic\SeachLogic;
use Illuminate\Support\Facades\Redis;
use App\server\RedisServer;
use Elasticsearch\Endpoints\Search;

class RankServer
{
    //搜索
        public static function rank($name){
            $redis=RedisServer::createRedisObject();
            $redis->select(8);
            $key='rank';
            SeachLogic::SeachEsInsert($name);
            //添加记录之前使用lrem 删除列表中的重复元素
            $redis->lrem($key,$name,0);
            //将搜索历史存储到redis列表中，最多存储10个记录
            $redis->Data_lpush($key,$name);
            $redis->lTrim($key,0,9);
            //将历史记录的过期时间为一周
            $redis->expire($key,3600 * 24 * 7);
            $key='week_rank';
            /**
             * ZINCRBY 是 Redis 有序集合数据类型中的一个命令，用于对指定的成员(member)增加或减少(score)排序分值
             * key 表示有序集合的键名。increment 表示要增加的分值，可以是负数表示减少。member 表示要设置的成员。
             */
            $redis->zIncrBy($key,1,$name);
            $redis->expire($key,3600 * 24 * 7);
        }
        //流量
        public static function rzfrank($name){
            $redis=RedisServer::createRedisObject();
            $redis->select(8);
            //日榜
            $key='rzf_dayrank';
            $redis->zIncrBy($key,1,$name);
            //将历史记录的过期时间为一天
            $redis->expire($key,3600 * 24);
            //周榜
            $key='rzf_week_rank';
            /**
             * ZINCRBY 是 Redis 有序集合数据类型中的一个命令，用于对指定的成员(member)增加或减少(score)排序分值
             * key 表示有序集合的键名。increment 表示要增加的分值，可以是负数表示减少。member 表示要设置的成员。
             */
            $redis->zIncrBy($key,1,$name);
            $redis->expire($key,3600 * 24 * 7);
        }


}
